package com.mephi.oshs.model.tree;

import java.util.Collection;

/**
 * Интерфейс описывает стандартную древовидную структуру данных.
 *
 * @param <T> Данные хранимые в узлах дерева.
 */
public interface ITree<T> {

    public void addLeaf(final T root, final T leaf);

    public ITree<T> addLeaf(final T leaf);

    public ITree<T> setAsParent(final T parentRoot);

    public T getHead();

    public ITree<T> getTree(final T element);

    public ITree<T> getParent();

    public Collection<T> getSuccessors(final T root);

    public Collection<ITree<T>> getSubTrees();

    public String printTree(final int increment);

    public boolean contains(final T of);
}
